<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.1">
  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">


<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.css">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-minimal.css">
  <script src="//cdn.jsdelivr.net/npm/pace-js@1/pace.min.js"></script>

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"blog.nasx.top","root":"/","scheme":"Muse","version":"7.7.2","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":true},"copycode":{"enable":true,"show_result":true,"style":"mac"},"back2top":{"enable":true,"sidebar":false,"scrollpercent":true},"bookmark":{"enable":true,"color":"#222","save":"auto"},"fancybox":true,"mediumzoom":true,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":true,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"path":"search.xml"};
  </script>

  <meta name="description" content="输入密码查看">
<meta property="og:type" content="article">
<meta property="og:title" content="12个月">
<meta property="og:url" content="https://blog.nasx.top/posts/anniv.12/index.html">
<meta property="og:site_name" content="Fart">
<meta property="og:description" content="输入密码查看">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2016-02-14T11:50:50.000Z">
<meta property="article:modified_time" content="2016-02-14T11:50:50.000Z">
<meta property="article:author" content="Fart">
<meta property="article:tag" content="纪念日">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://blog.nasx.top/posts/anniv.12/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true
  };
</script>

  <title>12个月 | Fart</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <div>
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">Fart</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>


<nav class="site-nav">
  
  <ul id="menu" class="menu">
        <li class="menu-item menu-item-home">

    <a href="/" rel="section"><i class="fa fa-fw fa-home"></i>首页</a>

  </li>
        <li class="menu-item menu-item-tags">

    <a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>标签</a>

  </li>
        <li class="menu-item menu-item-categories">

    <a href="/categories/" rel="section"><i class="fa fa-fw fa-th"></i>分类</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>归档</a>

  </li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>

</nav>
  <div class="site-search">
    <div class="popup search-popup">
    <div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocorrect="off" autocapitalize="off"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div id="search-result"></div>

</div>
<div class="search-pop-overlay"></div>

  </div>
</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>
  <div class="reading-progress-bar"></div>
  <a role="button" class="book-mark-link book-mark-link-fixed"></a>

  <a href="https://github.com/fengbrute" class="github-corner" title="Follow me on GitHub" aria-label="Follow me on GitHub" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content">
            

  <div class="posts-expand">
      
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block " lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://blog.nasx.top/posts/anniv.12/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.jpg">
      <meta itemprop="name" content="Fart">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Fart">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          12个月
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              <span class="post-meta-item-text">发表于</span>

              <time title="创建时间：2016-02-14 19:50:50" itemprop="dateCreated datePublished" datetime="2016-02-14T19:50:50+08:00">2016-02-14</time>
            </span>
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              <span class="post-meta-item-text">分类于</span>
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%94%9F%E6%B4%BB/" itemprop="url" rel="index"><span itemprop="name">生活</span></a>
                </span>
                  ，
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/%E7%94%9F%E6%B4%BB/%E7%BA%AA%E5%BF%B5%E6%97%A5/" itemprop="url" rel="index"><span itemprop="name">纪念日</span></a>
                </span>
            </span>

          
            <span id="/posts/anniv.12/" class="post-meta-item leancloud_visitors" data-flag-title="12个月" title="阅读次数">
              <span class="post-meta-item-icon">
                <i class="fa fa-eye"></i>
              </span>
              <span class="post-meta-item-text">阅读次数：</span>
              <span class="leancloud-visitors-count"></span>
            </span>
  
  <span class="post-meta-item">
    
      <span class="post-meta-item-icon">
        <i class="fa fa-comment-o"></i>
      </span>
      <span class="post-meta-item-text">Valine：</span>
    
    <a title="valine" href="/posts/anniv.12/#valine-comments" itemprop="discussionUrl">
      <span class="post-comments-count valine-comment-count" data-xid="/posts/anniv.12/" itemprop="commentCount"></span>
    </a>
  </span>
  
  <br>
            <span class="post-meta-item" title="本文字数">
              <span class="post-meta-item-icon">
                <i class="fa fa-file-word-o"></i>
              </span>
                <span class="post-meta-item-text">本文字数：</span>
              <span>26k</span>
            </span>
            <span class="post-meta-item" title="阅读时长">
              <span class="post-meta-item-icon">
                <i class="fa fa-clock-o"></i>
              </span>
                <span class="post-meta-item-text">阅读时长 &asymp;</span>
              <span>1:04</span>
            </span>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <div id="hexo-blog-encrypt" data-wpm="密码不对" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">
  <div class="hbe-input-container">
  <input type="password" id="hbePass" placeholder="" />
    <label for="hbePass">输入密码</label>
    <div class="bottom-line"></div>
  </div>
  <script id="hbeData" type="hbeData" data-hmacdigest="33a5f86839d94f4bb6d7930b85d1ba86451c7d152a5ae9c9bf772ffdcc65347d">a50256e8b8df2972ac1fd3437ea59e42d84ff6e6c64b127e5c47aff04cf53f881c8a076a93b0327ae75797b45c941607f81d6ea430af167b4b9409517a8a3f8eff2a8eda10194c33325530c58a895e3887dc190961c3b2687bcf825a669df5689dcd5f66e1ff4cb22476fb71b3932202c688325ca7fe5aecf8c8e33eacdf86f599f48eee421341233bd6a5b7c46d01382b11b92ee5f69019e3b47cf20e4d1d1ee872f29078cb905d67196fa93e6ad531aa5ebfcf75fb39289708980c9c5290f337d994c3d2cbd14ad1e68e7a3d456a63d4b65183bcf6c90cf565dbf1169d03c9f47c83a09657214d13ad0f48236057827789fa19b36a9570f1a019269a7506dfd0eb51f61cece95369d56333e1258a915e07599479608fa9d04f0ed7bd45c2aff980c92cbb09a35ff2d07c7b21afbd61e536481052221b784e4556e2c07ec499d549e3b40bb43e198c3128d07156038b5b109f0d970d8bb60a8ecaa3d930e7cb3d08eca7474820f42c365e918d3ba1908149e7328f6bec6d620a19cc222df447a0e54cc7c17b4c8cb16d377b73de28edef21c796ee26da69e6bea7b9311d51d29fbe2910a876485e4a2f63de7b2b65276e3e563d8b71cf99078c766d80328309f878db9100ac73cd82e7ecd79e402cd667172871c5eea5caf8ba97b0bd1e88d2f9704b01512c31a34a1d0e987e39740a6188d2baafcda25b42519bd92fa2bd5c8beb004d4a61877afebf2f124b9532b03ae1cc39b51e7d9ec2e5c45a06d95de7732af880230b3c3b19a6f3a0bd3c958a13464da814d395b455f6d9a02cce728a44e745b5f315f81bf11f92a41632eeb39445aa50bd6d9ba5ed9c9578d6feb3c469aae580e7806933b3d054a8153ca5cc09449a20cfd60b98a4b64584bf854ac9b0b2091f4ee2763f1ff606c3cb11f9370498f565674def64c66773d3fd07c94ef563f123837f5e969f28add837999ef6ac7c73bc1a879ef57effe153de9f8af925e4d77412088b9bbd5ec35854c073524044e9348cea6a2a7add7b20850453f1c9c4df577c253c01a782f0c702ec6711d791e10f57afe9a5a24a6c4cfa242bd3778cdfbece2556a00c6b313ae332290ad93c75e06d0050888be72af4b86003c9d9ce8dffc9e06111c2621557fe5472afe5bc8b2c550014339ab5499f75802052f025e4d1caf1ebee14216e3d87a83304a572c28a0108e549ee3c0a7ce852926fa59d870f34042a245bf3613f1063d7d18d69cebe60100c39804ab2f3f74d06a2fbf181facbfae0c8044ca6b163e6a4cda3cf9b08d2de8e09f73e711c8660679aa431521b0cc90245a0ae5b51c9ea8f48bebedb387e8965c7907a10b5e44a86fc19f895f7abcbb7bdd9a072dbbf2b71fb466a77f3ad108d079100820cb779a02e7f4e540d0beb19fc8bf849268ef72fd670878bc5f5aea6542fdf42e8e099e9efb11639ac0bb403f6082c76f5cb7cbd840b311bab072b0e43abf5ceff28e3fcfe6a75769ea28ae3c601cdd6fac5c18683fbe6f6fda0966a9f07fdc5e98963ff4d46cfebd3363efc0d941e33be366cfa756bff89730bec9ee79e34f8babada95e25961e37fae95a63359ad89a4d4171b0ef43295b9a95ae8bc05d52ada29899ba98ef97135a798fad509c9ff006f366db0a156b4725c128303ffbec768ed93a994986787132fa03156fd4853564121615bfb9e8f995eafe3654646484d7cf6c1863c5427c864b412cc47e6e8576f7119bcc117d3f381f33de49b8e0e7851bc49da914e26c4dd73c36576c24ccb87f12e115d50e94d9b57b1a8fa0fc2c79cf0de8f00fb508ace84c57a1e74421651aae2d6e6e22369dbc76aba897a8ff428ff31d834b78362208157173f04632e1f5a2a3169e87c5ccdec994041551716f3545b133b22beec33fcf6eb362fbbbb570bcb72d632e8dafb04a10dacbb1a405f97233cffccbb251b5035fdae9f9ccf8d7a3e6defe13e062657294e13981a10289d8ec54cc50e42b7372d415a7e8a95594822dd8d2e586dcfc90e9e3e9bef4423a59a539a866027da6d52e255d1cdb083e35a63ed28a202fb33fd73275e3507b0df74731751e4178fa91e7756dadd2a9a6d2c1c4bdd648ef907ec9746bb6f05d2d002709efb6677b984c770da06b5a16553cf2a592416f49a1ce98d29388b5392948ee45406df05d21145f8ca01b4fdd553c1df3de3b1e6130f95b467ea2f80d9c02ab0a158f96f5d8d11da45ed8709ccc5d6dff23de27df8192de1550b3fab3d1e6278b8195116fc0545e094c88361bb975d8683729a33c68cf79c3f28bbaead183c02cb7a58da2ac3e437ec66570f829e727d7ea9fb8d823e26c9145d1b657b9ec2c3c5e4b39481adc405cfcb4b41fcc63387e85c6140c9aca0037f2401afad77ae42db9b3f94709c5b7ea6cd64f094495a5433ed16d0ac7f95153db8eeb227be40b8a13d0ac568a1816e8daf4c9ddca30f393f7b082f7a50960716c2c218c7398377843f41cd442593e8c22a62f43c943208b508f2ab534839a6c83a44e987fc705e31a7e21516a3981977144c563a6b9eae908c17c9e41b951ad6fba5b1003415121f75601abe1627c7e1c99973dbce67a50ac67c9f9ce5e3bf6791c8408a03472e91242406b87e98399b21ed59e944158f5052aefd823608a7f034f931836cabcf8a32fb500697db46f0219247b08d2e51d068f02d4c8f142227a4d61405662c1efaa5880bec1b0656fc3ee0bdde5790ba055e063c269105ae5b0d9ed957972ffb3d4a7d06dfd7b062cc6eec26fc1d6de3f8201bc7789328a9e61f24687deebda19c71f80c082c2ef489618184b01ed984afa0f0c77a69d6f4f51f4ea4c2e2c8ab41489c0e5defe426c94e454214304f27b626416920a02e008ec0413965525b5f940d3446c87a0ad067bbeb0b9258a656539a5a2b2ab534ea1ba18f9e5b5b0c89b4b1719ee393e61c5aa411b37d02ae2646c77a9f210282c79b9f03710b30dfdff7a292d9e34096b2f3463e8f1de083b031f5910c75e5b5dea9e045033eb792c4e253c50993247ae3919485c80c8cc772bd77b5c42dfccc7056744c76f445320900ec6bfbc8559fea86493056e3bcc1ed343a4b544a67d950ef09fd95adf441a7d503205f9a29622d805a88f16372c4840aae7d37a274ae2d122fd8d84b333723fa0c8cf255e28461d04475562868a433ecc123fbe8d07fe9d9f3c3772e858c80714b9110f063972dee4a31cec2149c5e0e1e8ea4a3a3ada8546629e05adcbc0b2b76a932e7184eaf58220433d6b52356b457d49573769de9567b6b742750018b4e98cd0d8fe1a0cfc63ad2533a546eab1f334d90d01fbe1894e7d24869b365ab15fbca60bc1c1e63292f56e345aaf4532452df2f9ab759aa440298e8be755735c2834e2ccd87049c591647a0000c47dd26f20aaddcd09ef14b2ac332d4528c1c956657c0ad718271b4665d07490a82cc981b21bda17b5e32cc689f2a93347fc4a89f7d41f5f4e7061a680ffac7938483ad0505c3f79383620555c1375f44b4426fcf608128aee5eacee5b59552cd06fc4120753ac9facafa98e31f984314d36464f9171d898946adab1c1fe521d3cce79acbc9df090ffc3d5af031ab975dd102841a193c2ca0922d5a67e856dffb7dc0ea2ba50adbf14dd09e661dbfb1e7209a006adcab8939d8293cb3138690b4b54d72da927ba016b5482e7d4d3046d65286f65a41b67b45db485470ce67b019ed717ae0558e2a8d832234ee2005051feaf85028241773822fb69b4e0fe158b87396574ff600328cc9c70e3cbe997aa7c95c973c71f42f6e823fc902ec664230c213958e51d23b23a2e6b61790c25c692c8aeaa20656f8129592c304c87d62b1209b4ff454e96459f942e3a000e1eaf84645d7fd90e7bd76119c826db80411a70b4e6c0825c335828413dc211b178a5ad2b18cf0169ea89a679dfbc13aa83d52c8c519c457adfdb1dfede10a84f94f62f8326f90d1c82cb63fa4d3e234cc789d7c443db795db8bce3cea1031214b57df611f5126bd8a0caf5d965ff78c2b1795aaa32ff22e06b5fd05d3774d5a3f991c233ca8e0018483b57ddede7e32230d5a833e35cf795853713f7e642083adc2cde9f9ecfaf5d309f30dfe27b84c420e3321afa6d9f211878ebfffa1615caa7932a0f78e72551a0f6c561e7073df4ab87866a52e35113d901d8802c7e1c8b854c4b187e67362e25756b9450b47830c1d3dc44c9cb34f598a28631349cc7ec895888abd4ec4a90d3dee8c97a0db280c2207c9b665ca49738ef0b60bdafa04653c4f6174f375d0e679141b0694491ece236f9d7b2cdf3d5d5b4e40d6b0f408eef7ccc4fb5f74ed3784479b83599f6fc07d6e26e6a654adf8445c387ed52c1a91ec06fc8438dc505d12438ecfa613cee098562e8cfcce4d5789d919872c45d2f97aad3b1c9ed39f0cf50a09fc978aff25574a8825fac32b21e79ecf9628d821a27d6216cb4dc0cc37263ed5eb2a462a21e1a4c9e0910a6bea5a1ded4f79d8daf5617e3e9eb7b20da35884b3a2500a2b27ab443a412e900ce350975ad6c6fd6cbe48f4f4f51363ab34f335b3d1b6771d31d40e716c49833fb01e8d52ceb4004d4c7c9fa7fea9ab38b24b661637aed33ca4aafedc6f8e213d49a0571ffbaf1db933a2b46f0067a2911eecfc0463ececaef547c0d37935af6e4941ff63197d00ef33213bcb92f945a123319071ccdc09dc6a6a0a16ab0199d800c2dc3a699fa1addf20cb186701c63d7952522aeb262d3040b2d105f398130d385d77b8ba8344105e23aa63739df48722517ea01d2ffcc3601d556eddea36f925d50ac5c4eae17775ccde2de07a9ad104b8fb8ea88bee300acf10e7ed8bf4d451fd9608962e9bec0bd443ccd97d684b95dd143e8fa8230595abd58a511555b20f3a8dcfb4e7b5c2252b0125bd78580c28c95114c34741d6202efd0f39464534bff7d2889227dd3ed8e007c4087f744ad7830cee80599cbd61064deb23427c56a6acf26eaed69a0e8bbad2c88ed6f55ab95a984d536f15ddf4990da0a392570abda3ac67b417a74bd022e92ef64831304e14e9f7e044434c670105e2f2abc32c32a8c0e4a3611ccaad9eff527b7e0911ef9ad2c7ede631d10235bb71263f73250b52f429032b05ec23f3ea91424b46fc23b1e229bd48212256960b83c9a45637e6b55099dca5e2ee7ebf2c9e1748e7a1ca19255352e2c717ba14116668c18dc7ac103be0dbea4e3aac3d06b55adcb3c96d091ce3531c3dce5ade7255d69d17b50f7eae2d702ea0e01d57ae602b356945a2df13360ed61ca69166b3ec92fbfdc893df652f0e53d0226a123b88526212770d607c6add6dc76d29c75f11763fda2650b9d493b825d39d9e1dc160a823745679280471cc9a2176ba3ca5120432bd2b19cea136f6fc258bd3e792396a8b1fbc22df545b5de7650d71c4ee3751f2a45796603fa99d0e9dbd395fa2e818c242fdd9ccd5c270c99f4a14485a48b2286a5c4ed62e001ca95ce22d73238248b32f42524e2eda5da6e3b1612589dd54260f780cc1d70002c0123e773e4c40c73717ef192a3606893b07e66b204c5a070e6a246c281518b14faf005524cc0134439246d0b7e2bb5750c468789a9a962ecc6d4cb379d25fbb2cbf896d2ecec38d11740c0fc932accda60715fac074541cfd82ecd00764361208ddc90a55c33528173fcf947588637f0975e429bbbd6f72b6db4f374f7d9297bfc41d948ae8ddf42ef67a3060659aecfb0f1764bd950ddb9ca592c92ab5aaf5440937111e889f58ffc6fb5630add50ec0fad5fe03dbb9fd070a5b143ddcf0ff71d8ce5225604ff5d4b8d480da4507fa85692ef9152c801c0222375e205573a26d0334dfe9c0b95ae10578fbd2dffda86f5c72d66dbf8cae6b4e46ec7ac7263044eceb111f4f60b90e41c85051be7e0daf7d6b053bfbc04bbd617056540181a06be342700dbb6d9294dfab234bd9f33c81742f66e40b41805721e1faa406a606cd6b91102c11138accef2500a8fe9e6920739be97487a800131c56301804b5b4da1d668c9f3f67f6ead18dcd91fae85a9e9124ee5601fa5ff04c27905757ca9a4c272d941567795da3fb224507ecaf047c17a5215b482a9f1df8e4303632d6e818c5f82157345c8f026dd023b1701a77ebe7d620779ab82501bbcaaf4de575f8a2932099f0689e12adad7aada09a2d90f3240809cf54e0e9f17aa077fd616463a53f6f66d1952259fb9f31a960b8e929b5bbf585ed25afcf1306c797c4ee8f9263afd4d68fc5df8a9cd0e3bfd0f36b30c11d8e0e814754309cac977651d872532743cc5f99d67bf705331c5bbe5e4604188be8a86d5075106fd61b1ed599ae995f4ae33bd4f9d4d860e57c1f026bb27cf97729756c09bbdcde4688b9cc078dc83a8d592b83d683edfe06ca49888aa065831136c0feb37852754146582d4dd203c714e8736747a466e1535a3b262c12457c0723c895addbca40f8eb2df495c68b0b80ddd864846083d1c0afd21126e72dd7bd0cea45bc0c9a70eccd9936bb5403023a3cab447743cf475d66a8ad75b185a6e006280a85b2be0dfbb9e925f484954013837eb6414b4b47df748345c2751468e9ad211f27bb0d0e643878d84cdba02ef72e17beff2d48de9d6ec6c2e13e8c60a2c4e101e828fa070ac1dc4b54ae2615a2e25f5440d4d8e6aa9c04a9bc30bba0888d1d6f8f49f330e0214643b7978244cd677e5570c477b5a6f054da59dc99f335b768d4c233cb113e4908c1cc3f3d4947c99ced15dfc93105dbfb2a138cbd4dd90ecdf8bf6e94c36664d4ec06af90a08f47b895eeaa9aa5ea3c1d59e6a0626621ffab9f553c872257b54a6d6796c18aa482d58d437f851122c5f4ff89f4865b95d6b419fef890fa3d741505e86058d649ab99419af710f208698edb80f1eccf8759fbe43653a031ded5103688ef8c4c36b87ded3aacb45e93d440552311f237ebf424449d4c8a72aeb14ffd5f2da16428186dee5967a0ff2c28f56539cb0cd5991cc0d523813b0ec58d731a28b1cb100fb30d1f909af4eaa7befa10d52b172df35f4c3af7025671a0c4f77e9eb8431443ff8121989d31ec90ba9c057caa53882bd4dc297dd39260c424e1de5ec959e26782104bc851af7342228df3a99bd04289e3a546e10a3b51d98dd495f80bd61aeff699f61515bdca3e2f67ce2e794a97a99dc89638fe2abdfb4fa332208715b106763d62e02236664b5b8bfde060bb6dda755089c31337731224f11c9215702cd199f96169169797695b8d7091ef9e39b00296fa7dcf3524878ca75dcb6d9c849badbaf4306b2f4d1567c16a664c4f7c99a46e9bbd3fc6a3cdd631fc89dfc708da0fc09da7267df5f0e15e697345d73446e296c44865cc9987217e7d76e3274cedbd08cef8c68e903ac7961a2a423ba9509acbb1e46ce08795c00838a2aa11908a61c7226b771448554476f078a6dc0a34cd9d4709739297a97c58fba693efa91e8f86aef2e0334d978ab9191a9668472dbe4572a28d92498486df25a8f0ee64df1c6f335ce917ae64ea6414cd615f42635240fe1a02fa797fed11eb4045544a8ef46213aca7e7ca5f4a594e4b5c515f0adc3e00af003cdeaccfb956306fd26b68688b9fa92b192d3d30717998b25dee8ae3710e93292fac5ef847e57df5510e496931d61ca236ed21b69843f747cd3ca45acc9300a4967dac60569072ed0a9f6e932e9782fe057f1f040d7feceb54f8f6f7c739e117a95d3a46ffc77d74e9c4101deeef9a95c8fda6d2132eb518f2bbe112b5bf0e47db8e9f8ee6394fdbd93622fe5954cedd7bcd252049bdde3f87c9782b84fa08e34b3e7c87f3b1c106c67720cbbb0e5b0956af298a5a19fb4de8c3c2fa4745e072c55a0d46253249a15589a67629a01e1f23503e7cb321d8cdc3866d7c50f5d5812c5633c4c825c6d21e2d38d46bbf46077762081378834bc78803e1e71d676920ad69193e925538600315e4519bfd7f75e57892b295e5152724280893fcb81d9922d414e2380f65cc579bcba3b7589c5278f2ff71b95feba8a8649a4ddbce1049650549360c6e1d4920cd82db6e027603efc8c30deb0ba1aa78b8ec44ec31b8244bf1f5185affa12686c3b4b5b6e453b234a7841e11dc3c1fc296a3aeac184b2c7f17ad16657ecbea30cb1cd650f9904e5488d4c112681860a7cf4a722015c3bea9af5d0d5c943caa95a2eb9d0b56128cc21943623cb314a005cc17218630d05ab3c78c365125f0f4322ba93d7f44568f5928d6ecab56ff27be33add2a5bd9b1cbaafdaa0a183332d33862c37d32a46004984c1f24054a515eafcd729d3af5e75a14423c9f3f1ef823c0a1d89c0d77c9ef1de49d969955e2c74cc8bd7a47008a87252e65443cf6cf9eb4e3c8448a220f7ebdfd4ddf88e2041ea78d7ef6cfbd0e07055eef92951c7fb9efcb7f581de799d27b4b56b60b51b5efab075d0da93be7fd99796e1ffb5445663c2ea4cde9f9646857b07530d38e9e10974019c2beef9a314405e35a8df7b31eb27823d59cdb08c7b14f3cdd63f4205deaa2ee2b1ac672da5e3b23acef7b96ca03f85ba01581515362f71a3a52b37d993a173ade737338312116b3626e88b4626c40d6ea1a0bf27acdd18cc66e845e432348bf1cf34f1efe72264cfde1b8e47567edd3c33fed00c039e11b98b0d57703a250d11514c196f61b235e8cc6ef7f065a40ada7c3d658ecad6680c3a88b30ba3fa380912d3225ab05c3c82c5dc45f08b00a1f761a20679470bd2a1eb5d4bdfe9b30cefa552db13747a30af7a9c8d3487a0be410e2ce8619c4e7c28bb6adbe7867b736e447664b7df5abbe9030b03fef8a5a0e7990d5cde32fa25eef30e49824855f1334d85bad2211f518aaf843e940613b25d0801a11db35af3a5dc5ebdb9fc9f4fc403272b30b8cfdd473184e602ae8b21e496abad3e2b8292c7d913cfa39f67160462007bc2b3c1b5cc447be5cfe26d7ad04d5f91d515e7f70a54c289aa94f55a745a08e83a4a3c4ab28f67e3062e4db7edf067bf5b5e94c4d5fb8c95d2a590dfc31738a78321db310d86b419d5b8323c775da941b5082e8ef81a793263ece5925510b4d0c723a41d561c64f0b18c261844e64f41ebc1050d916ca0165555ccf9577367da81b8c49fd1dc6f94ec7da026b2250ac669fb165dea0146a527d84d86eea21f8e67645bd8f466e755117bd30a9a1889a3dc905d23c26b25c6f061a49e4f32c29763b81f2851cc75f5e6c6e681989967b671e305a85740d8d16fd0f203eaef37f3288126badcb37a0a81ed5b199db95b20e52e0370dedc16bfc749e22055f9ff7b734fc0e16ff476493a61bbb703d8872588bbf1bb70f4036eceef33feea143568da2a66acbb325c47d4a9cdb8fcee83420d0aecde87229fd7cd8ff097564d4b5bfb8d81f7fe3ce155ce0fab31e98a5b0354adc081e5e466715cd6241150dc10d7badfcf80b495e63491ff935f22132d1346c28bcf95c8cdefa27688f8a16e667541f8529881ad7ecb9abc3e031f750bc36e6dfc575c6e08eb44b6f785b9fd9fd638bb6eb9f42765aa260eecbfeb5781209a886512b161718dec8e7f601257c74f6fbd77f46b8f57c19bc54b253e264662f7c9c15a2c0be980d14c299e5b03d4151bd5c1181eac33c0b163b696525a276fc953edb0ccd2424f5a0c51e8dde50be5d095a3590516401675ff2583e0eaa82067e8c76faa999e4753a542d8b65c4c6eb11ef4e274f4d3b57ae39034464476cf4f9a00727d90640b6d9a9914bf62ca1de93b55332a4e84cb04b1bdb6195222f7ad81ca280a8b67a8b752f4ad6882e6203353c513a4b2654895ce2b86018646174ae777ce117cba8d2ab463e27cfab71b2ee0bf2bf732fd1580e5ec5a35623d0f0ba125b402b4d863e1956032cd83840e1b9fbb9372f3837476efe56488690d066ae74703eca3ed99a7911274b93db287b7a4b1867e32f0debe2568999481d9d8907507cb95f835dac45170ffc9d301e3c26ac537526370744ee019a3e1f134996a58851f70454e6b10ae1ba0c0ac0bdc5d3d077c5bbb6a82a627efcc06693cbec86b1c25080ea3344141fc8665d1a7bc98ad948a595a9da795956850247b1b8dc672fc87cf3561e70e07e6f50525d690a304ce8ac090e09cbade6455d22e3ed6384c04a1f60f72bc80551fd2c11a915c254a282f1ee68bdd933db93536b0263111d40b529e0286ed7df855eb872c777faceed3d5b8dd0e6acf2f2c3e76771cc94458873f8231b13096ade0942d4e3dc6962644a7415c90d401a3380a9d4763a69f73cb0c1b5bc28cd2ba2dd17d963242f10c26f48afd17f6e86994b1546411dfa34e53641f7f94f3bb5a1fdc106119e8d2ba88d3887768b8cd634a54e697fd386715901b1c5ecde83855e72cf46e6e5d86381dcc73ddc227ce3d201aac63826016b0ec9df655b397b20ea7fa84e93ec97ca8d20cd271726f9931242522d9229d54b07b3b69106072c6c67a34db3c56ecb2f30a379b69de1b40fca093a64b18dbff76738e5952eb856d8b7404891da105ff6ff40cd9625db0e8cd8a53e8e47e13e9398e2c2250023e16a27c9784b07c5c2211d1462eec062c4c6ae818a89b3d039877d8da95cdb48f7f48e60f99c5a5dd83f790d379aa7177d8bd99060e59d82498829316905198146239ee61b1ea8537bd679a8500477a3394528832350305a5d46e20d7eb1c2c3add4135c9599773e1326746b4f5404d79344b8754b9822e48a5af8aa409c1cb59d78e773045c0143abe6f8fed0631acd5bbdb3523b6b3dd6d327101159d0f95b70b3db8fdbb461129f676eb536275d4b3548825310bb880f2e64faf2368a5c00832d8187667b17c81b1bbe521d952081b4adc9e2cefd9b531c0b0b7a552b27bb8bd698b8045fbec655d85645324a180590d7acb90e688ef382a6cdb802f9144a1750bdd39fc83dec505ee9cbdd24ab812b16c9eea262494c86ccb19c494cec73245a7c808bcefbb49f27db6a195ac5331fc53ef4d608338306f0e7de8698f4c04b983096a4ab4183350cef4828ef58c185542b28e58704e7adb53ee8fb46db4b0a153b33f040e81045fb3e16b5f6f3a1ece5df91ce44a12c41430e1a87716e831f74d1cd1d44764fe99ee9e2610e488f84ae9a4867433c03c4f025f566f17e9cbeae30dc9cf3a71fb15057453524400101b7965c1850a376a27e738c3584cefb155cd7bd13e0f1b15c01596b790e894053875a72e0605238eb4ee22f7f6aa683b339bcf95e97687209787b9c05f17c4becf23ff1f6b04d386741ea8dfd44454b0f5d23caad5772212fce70b1c5418c39d5ebc6ce842580a9d51e0d39fa284e2b40a0f23be969f723af3031b3d83dd53acb8df6fdcc0c70665d8b3c6e6fb5098332dfd1d898d71df2b60cf30952ed486e288917dccd4a48c98f8ffa08fcea2e4642b9d3ea71ea423b126483ff0a5db972d9cd0aa35e03946e8c98ba907421c71d48c026b61b2ed45e8b033ed1dd935bcee8c2d964d69d6ded92ae9c76a38d1b191401a68a8abf9e33ae5430277dc9296396af5ad87cc77f96100d913701180e1c1ef604bbb8f4edf9717e56b098a742262427e14ac0af61df949a07f664cdd0828c0d0035e6c643c70274624ab0898ecc589eade5e67821f2acf14ed62bade476de66c615906aaddd5e829cf415d0f45d73c8cd19d4ae3d6c05e25da1a72cc2e37c94c477a422cfa02a9760a02b634eb1037554ed53289aeee09adf84e3f2393d1c139d64b4e50a75285d08e77d66f8cefd7fca058d0c479e70f5d5c5902c4ae6fe1d916a27d0feb2110a67aa53b6ceeb456659ae193bfc96ed29163d88c01dd01df94f4846fb6ecc50151859380a6cb93efb804285d0d55ac26435d47c54c4eca38f22bcbe5825a7a6587afac339947aa97f62d4877d6ac4e8a26cba6764284d3128872b8f73b3c1ca2f615161c8a438723bce454e93c6158faddf15ab360d6a0adfd6766d68d060cbfe0ac91cd7ef7026a283e3a1ac457bfdff2074f6f25ac06058bc3d608006aa3ecb3611cde405b7fd2173e471ed4a2992ad86d0ed47cc0954bb761b7d96ddbf889167abdf9cd79c8e306e15b71f89fbf868413d0f9376a3ca16599d6613e6ea153f4420276b2675428ef5f4e4a6c6a8b9e11253725ca09182749b388769f6a9f7f40e557d66ff3fac6f96763ee6a8b32a61b94bc801ad816d66f090bc54cc622a91fa4dec9d3189a5fc05a1667ba52218d78094ba4ea183f8f49a2774ba1ad0b00c615f43f09a7c1cb7d1da9a5fba4f97a26102e1666b9b6d29a1eab6583821fd036c7d7c399c1b35e1335499ea26e19f0a9b770b2727a48af88bf583d4ce8d33c6464e3d28e346ae70a88fd57276c6be440e5e75a8121fa50fa8f2f79314d2ff2e9abb83c3c7a536dd9c1dfa3ffb35645858d58217315eb454bbb6d2d3195994a42885412c67a7dae5178ba3b057ab5adfecdfbee9489dc1e51d0baabfb351bf280e891e3d34e64b881be17b0deb46720e4e507d21d4203507b4a1ec1f3474c98daddc643102c872855e348e8f0d2e5ea1dbcc7eda61598d372c9549438e0ded42ce8ec1b58d19d87dab5e4f87baee90118a3a05e54e0825ab88279ac7a5f6b12747dd55b847d588fb456adcabbcccad5abcecdbce47c3712a2b82539bc49a3194ec7b3c9ecfcaa66160679d1d3a1395ec33716a147527c0c1309381d2a269d3bec755b652524acfd1365a2a40df2e5bce4ace9f997258d8e4e15e58ba0706375fe915943827544f2435fb2adcdfe79d5568850bac6e2cca90fc6551149d414e57bc8ec01b96b225e8b2c02c9ca188c5b72e50670079af5c928ef4231d88ec9204e14c73bf3855c4b1eb7e3a085b25a780885ed5ae201d1d8b757c710d97b3abf94fbfc6f3eeb222c3d9e7caa96db79325742464ea1b27e850697049f8e859d1dc65dcf51fb2dcde064779cab9fef9fa2b6e7d8050ed4b2feeb546f30e9cf2445828a79b1cab5ed20c97325ffcf56dab8c9d015957d1a0a2e27cf6dcf9de3c2536a3cae12445ecb65ae8c8e9c81e3f3d60eb687e6e2f0a7edbc78de9c17168cad459e4aa1bb066b41c12dd7b7354e4306c6bd4b4ab823fde08be5c9b2d07e7b35c8154f8fc38169354c2722ecbf4084f213c2a75eff9bce137f269bec70c3dd2c5a8f46297031207186fd4d70183f07e1f1ba2e1c4d57df9e791819fc719e1e0e37c3ad4aae606a72b831e591484b9ab906df37160d1387122d543a5f79fc4d1baac90863b1e73f52e38292f901620019f0024490bd95f4b3fbbb9a0d962455cbea18a2d995851dc12eb288f866784cde2acde6680403a7b58a7084a5d5c6331e3ce15645f6b686bf76396bda3995393ad09ad8885380b3029d2edaa2ca83b8ce9f68a56425823f31f1db9e07df226cf57e9406041db27064ad75ababd4cc1a7d46545d38e3a049f4b468c174e709a0fb56e14fda723626a6716272684c2dfe604fddb315cbf22cbec388068fd430cc95a8d1723ae76bfadbb62d8b5740db9a82ac50217e18c60b408da5eb54845f9437471326cdce42f0a61ade2c5d14528cd881bfd2518c1a3406098a65e764208b5c0b9a355c76df42d90d9a291232de3a0512fa696fa2075dee6857693d720f1774db2c3932f4f681ff43232179954d89206d52ae22273e8adc221f9e78294b432d3cf83dbcf0410eb79c0fb4b5f4f65b54e14b2d5cd69f19aae6e8881a749f934031ec07cc83ae815310868b9ac7d86c5116ac56fd8961c7dda3ce9a9081296cc9a4793f0ea46122f619dc77233088039aa82304036c3e3270c7c206ab493e93fd8d3a319fee2f5b4e32b146fd79cf1c610206468bdf03e267742f156575d58542a615987c273aad185ec78676ebd09403ba5e646abd73a6ea2e30f428ba52e465068613a4ead082be7b317570c7c6a1a02f2c661378ed7fe3fcee57971b451717205182aa395215b0292a2cd88e9d535bd30fa69c6208f9599e574c78f90cb037a3bb0bf8d63489849c05ee7f19473c815a777a81e53a9f5408e11437a533ebc1db392123e145085909bd71ae6966ab4b5f7532ab3ff5c4d9b16dc956c71a5fe1053d7364390341a54711d1e22ecc7e21eb1a461e136f84e2afdb73977c76815e3132ed9c6ca61f3b316a5eef8b7825dbf8d94ed1545d4851498fee1f8eb279f2c6761db3d1debd1f20187cc278031bface6f156b0dae2c0e064273e4868e549386c1a9ae0f7ca52576243c52942ad841a3ff298df0986586bea8fcab689f1c2fe93052c656153b3a81b25a484302c756e15de21796e21ddc91ba2884dda3488def0e43f6d571d02ee4a025fa70d396e1ebc74f4d586376f96214c69148195e8ffe543396f6f3a5f578795086de6241e4ff7efd6bbf00b88cdb1fd7c5cf057273af5657b49a289c9ed23e3759f08ab3e7a6438f791cec12f2ded36c15cfc2f2537f1b1f20ce87027ec0e2cf1954c438c2772024bd6fbf635ca026d25cc84a8e3839eb464e3d2c7e50e6f6c0a779cdcd598d809c962120df40b956c46dbfbe7384220942b08cf09b159d48eed93b2f75ba091d887186622285f057a6bc41d6f5ad702e8eaf4cfb5f823e93ea9b5a7ec4e1014de5fedb08a4a5c5cc11ab9e88b87b148a6c0ff6f5d87ff0ff55df81feea6479e28b5792f0313f72f9def0c7620f25061db29730ac33a46366f128e45ad8caa3a4c086d566b69086f307ebbb19aa1ff9723450637e94412aa9a53fd712930ac74f1d73d4a57ba5ad0c6388d466a1553be1aab8215ed7169292e4ca9a92119ec3e0bb34376b4d37c898aff05a4cab3d8d2913a18d8290510d93dcccff0abf9e8c5d61ee31ec7f337c06bbd6f544433440abb9ebf9205f3c7e426f54bf7b09be2f8a29a168ee8312c0558e3315b320603ec45afdf7779077593db7f3d55390fad2d609edacc534027f7070632f2e307b1e1a971fcf7d0e3531323bd7578478a590e20a09509f674dc489dcfd9d4900383f00f46e9bb777d204932179135d1f624c912a1891c3091bf51e4c1882b850a37790992526c22fe132ac2b886a940a5f5a54e73125b1decb59f7f0e9c0a283163c5bd193451717dde6ef8f8c6ab182c9c850bae8a519eade25e00d3f3bca55ddf2603ec8ca2c4a26ba2fdd40b8a69e85ba1b112bf9b141421df61005d38cccf43f08c90724bd14ce4ea56588663716054f1eed42a3658c0199e983335d8e6662bde088e0e6feb78c780aeda0030b9a27866408b6ebf7105aa4746bc80273522a97ad85f231eea55ea16ede7e669c2d913d74d7617158578d3dcabda1d4f9282659225525db6b96f357dd0efdcfd1e186737f62089fa151eaadd4b0a388b6b1ba19c3b203644288b7042824de915b4482268762acde419e0c1c2faa99b55e4894d90025935d98887840ac16e8a1dc02aa08b1d12d7ee13ab632ef6497b4a635ec671633fc593a998bc003dda444c36a3b1f647d08e6550f63defaaf107105ae23f765bada2d7d3a036e5ca8c15225b8340fc1f5fe9f5d767682f61a37591b8715794598d219af2bf3e3335bb0a87585dea74b96518683d8e27b0d7ddde32d751123ea89188e7786eabfc8ade14527c9a105528f959dea73908c2e1326b37f294b3185bddfd696ad6fd748a7e7b83e813c7b85f148b5ea6ae8a4bd2e57b4a6fc55d80bf5c3364455aae53439e286e4f4b65c73add2e9562336ab28ae13957830ad6f5fde43ea253ced79447d7f674e82050415b950ecfde9653fee6335f9d4f4ca13f07770063511737a13c5efa7ee1e0c9eec06496bc4e51eb195148ba88e63cbf98c2c1de048abb70fd3239d74910d255fa8b623a564f97e0b83da71a759418a00cd25a19aa60f1cb1948bc2988e86acbc0d4a21d6a3f4cb8264a57870f37239b47dcf00cf42fbc7319e54a3825f4a6a100221a0193381b280e739f1f47bfa6339ac4cb1463a5b68a244866437369a63418e50a72bf1326d19fec49fe96ff8eddf875006df9b8208b1d79b1b0a1ab04d7e14e1c7a4c54f0738de50d7b40c5f63da53c5281faba007ada241fb23593dbae61c796a97046fd94d0b2b17aecaeb71764bffdd2b2f648530a2b7274d99a5eacfde57433ca229c0e8a73ba35f0a97532dbdfc0c7dd6d3868765107c569bb5726e3ae70c76e7b87d09bd6db870dc033d99d23d0a0624be8f1b3a726dbcb8e72f4861fd7ae1e64336063876a5d6d9189ec7875978660b2aea583953d4f3e8b810eb63d1400aae346cc0ba40bd80f4345a3009b2f1302bd0c0f1b1909e2c711a83b34c7c8c0b1294b2a4121172e59c864982bf6f1303dc55d1b4199f2619025716a3308baf25a3e234aaf4cd7ccfa28f8f71605c7e658bd40599569f976b347bb43aeab54fa3fbaf778e117cd41664aeca89214b7d6c7a2441e00ec9feeb2130ced9efd150d31667faeef9db126df15efad4ec7330f07a2711f62a7946e00e39c5a386ca8b9fc8e5830e75ced9467912bb9177e95d9095cf8db714720b9faea777feac080654f7cb42554912cdff3df332cfefbdb3e5347685724a7a4697db18c511a9856c51fe894ba8cca910cd9adf7b8ff4e9f9258ff31c0add69778a3100698f03238e75f4e6ae1ff201a0107dbd766f98b000d2705a6ba8175a76194b6ef29591655504aa4c8c63439aac35426850788333915bdd0c38516b630b00a9d54b19e2f58cc0b139ec6bc006381f5be770ea6ab3af6a028df85e1bff978dbf89b62b34c6d16e2d99db0e6f599731f6fb00751b00351e5f834247e85e561275033e0eb275c17167e251a275267363d469722cbd14865b129cf750d4a73fbb050825c6bab03faf15afa15df1663cfff76a20cdae2b00ba49424633d49b54492dd7bd1f6dcabc759ac7da248a000cbb47a7b203567e691c671dbf37cdc21ff1be41ff3d9dcda9ce7548c527aa9dc83bfab2f497d55b6067150fc9c42160f8d3a55be50c28d57ba3ec45368a0b9352150290a31b30811377a7d305d84747a99ccebd4c0cddc23912ed82cf1683d99c4a7d55ae637b6af2d734aa19c44856e3770a8e4b4c3ba28f22ba9a658119e4009dd4777e352f300e83ab47b6ce6af3ac626fe07b217b326bc448a33214b05da18ed0f9a895a4852f42cbf5d00b0f623ecfdd8a4d3c836a3975cb694282fe70a35435295f9dba214f29c784a0eb1b6776f6b88e1a1bb3a71f498afb020499656ee50bcbd0413cd7e3608ab40ffa4b722e616e9d10070b70e7890d385c889b8b1bb650eb6fd10b357d4a2b93571856a61cfbb9cac49ba160bb66aeb865dc55ce2d2d32dda2f1617bd281671f7a1839653980331c3202055e7dc587684d6c68a7546c9ab30d5b950726c3b6f38a918073a94b6f13237c71634ad63ab351f36929a56945e7720860c03ee9467f21b095b31376d93c8b582d483d7dfab78da163f6a286e0a3d893b0835c5b87d1534cc94280373daa001b8ecfc25a807edb3a85007114ca1d8f560b1923a4eb0a9b23f7887a2b0ebd176c9f55b3ae21fc4b6978ea9572a3e53db354092c7f66a8b51411121f06217049fe9f49444a88fb080964ba192ee7fb94baaf9a8059b43ca2b79c7e545f2772c124b1f06d25be74aca4bda5aa5fae42c328a12e293050552628382be777bbd16335cce9c48a0646d16c38bb7e084d04c3b2db357d0f056e7b36df5261c03d0f338aab33732bc3e6fd96e6de90d7c2944f0bbd37352b33a4e619bcb165f0299dce7b00a9f28b63aa14896c618dd8e82f6c773457a24c1771d7c0af8f0c5b1d8ff03efd81fafe46bcf4e75330c0b6e20e0e3d1c17ff2a46943e21eebba81fae25f81b9b12e993a8239ca03adf3ad6e9d411e41f91af3420c59267d463dac7d5e2e52e4d5c0d459a56c458ec89ab04ffc1dc75dd0a9f8af4542e6110d4104879a1bda2d4fedd7c4379c56e543a0c7b2367f3a96bf370384ee2c4359dc5ef50128db58a5c153ca67845a5742beb1e23354a392d65f67512f736aae31ed8eb147388d27db27812cf4f2a4f40e302e39878d104f2e6fad1006bf8e19c6f8045bc9fe2eef572dabb58bdf27db900eed9ea93e7081f06501d5369b8ed5beb1156cd234f3273b1e9f0fb41e8c073dceaa20b98523eb15c5788f5fa85bc20c2be5428a80c5342</script>
</div>
<script src="/lib/blog-encrypt.js"></script><link href="/css/blog-encrypt.css" rel="stylesheet" type="text/css">
    </div>

    
    
    
      
  <div class="popular-posts-header">相关文章</div>
  <ul class="popular-posts">
    <li class="popular-posts-item">
      <div class="popular-posts-title"><a href="/posts/anniv.0/" rel="bookmark">0个月</a></div>
    </li>
    <li class="popular-posts-item">
      <div class="popular-posts-title"><a href="/posts/anniv.10/" rel="bookmark">10个月</a></div>
    </li>
    <li class="popular-posts-item">
      <div class="popular-posts-title"><a href="/posts/anniv.11/" rel="bookmark">11个月</a></div>
    </li>
    <li class="popular-posts-item">
      <div class="popular-posts-title"><a href="/posts/anniv.13/" rel="bookmark">13个月</a></div>
    </li>
    <li class="popular-posts-item">
      <div class="popular-posts-title"><a href="/posts/anniv.14/" rel="bookmark">14个月</a></div>
    </li>
  </ul>


      <footer class="post-footer">
          
          <div class="post-tags">
              <a href="/tags/%E7%BA%AA%E5%BF%B5%E6%97%A5/" rel="tag"><i class="fa fa-tag"></i> 纪念日</a>
          </div>

        


        
      </footer>
    
  </article>
  
  
  

  </div>


          </div>
          
    <div class="comments" id="valine-comments"></div>

<script>
  window.addEventListener('tabs:register', () => {
    let activeClass = CONFIG.comments.activeClass;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="Fart"
      src="/images/avatar.jpg">
  <p class="site-author-name" itemprop="name">Fart</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/archives/">
        
          <span class="site-state-item-count">102</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
            <a href="/categories/">
          
        <span class="site-state-item-count">21</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
            <a href="/tags/">
          
        <span class="site-state-item-count">41</span>
        <span class="site-state-item-name">标签</span></a>
      </div>
  </nav>
</div>
  <div class="links-of-author motion-element">
      <span class="links-of-author-item">
        <a href="https://github.com/fengbrute" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;fengbrute" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i>GitHub</a>
      </span>
      <span class="links-of-author-item">
        <a href="mailto:fengbrute@qq.com" title="E-Mail → mailto:fengbrute@qq.com" rel="noopener" target="_blank"><i class="fa fa-fw fa-envelope"></i>E-Mail</a>
      </span>
      <span class="links-of-author-item">
        <a href="https://weibo.com/fengbrute" title="Weibo → https:&#x2F;&#x2F;weibo.com&#x2F;fengbrute" rel="noopener" target="_blank"><i class="fa fa-fw fa-weibo"></i>Weibo</a>
      </span>
  </div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">Fart</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-area-chart"></i>
    </span>
      <span class="post-meta-item-text">站点总字数：</span>
    <span title="站点总字数">155k</span>
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
      <span class="post-meta-item-text">站点阅读时长 &asymp;</span>
    <span title="站点阅读时长">6:29</span>
</div>


        






  <script>
  function leancloudSelector(url) {
    url = encodeURI(url);
    return document.getElementById(url).querySelector('.leancloud-visitors-count');
  }
  if (CONFIG.page.isPost) {
    function addCount(Counter) {
      var visitors = document.querySelector('.leancloud_visitors');
      var url = decodeURI(visitors.getAttribute('id'));
      var title = visitors.dataset.flagTitle;

      Counter('get', `/classes/Counter?where=${JSON.stringify({ url })}`)
        .then(response => response.json())
        .then(({ results }) => {
          if (results.length > 0) {
            var counter = results[0];
            Counter('put', '/classes/Counter/' + counter.objectId, { time: { '__op': 'Increment', 'amount': 1 } })
              .then(response => response.json())
              .then(() => {
                leancloudSelector(url).innerText = counter.time + 1;
              })
              .catch(error => {
                console.error('Failed to save visitor count', error);
              })
          } else {
              Counter('post', '/classes/Counter', { title, url, time: 1 })
                .then(response => response.json())
                .then(() => {
                  leancloudSelector(url).innerText = 1;
                })
                .catch(error => {
                  console.error('Failed to create', error);
                });
          }
        })
        .catch(error => {
          console.error('LeanCloud Counter Error', error);
        });
    }
  } else {
    function showTime(Counter) {
      var visitors = document.querySelectorAll('.leancloud_visitors');
      var entries = [...visitors].map(element => {
        return decodeURI(element.getAttribute('id'));
      });

      Counter('get', `/classes/Counter?where=${JSON.stringify({ url: { '$in': entries } })}`)
        .then(response => response.json())
        .then(({ results }) => {
          if (results.length === 0) {
            document.querySelectorAll('.leancloud_visitors .leancloud-visitors-count').forEach(element => {
              element.innerText = 0;
            });
            return;
          }
          for (let item of results) {
            let { url, time } = item;
            leancloudSelector(url).innerText = time;
          }
          for (let url of entries) {
            var element = leancloudSelector(url);
            if (element.innerText == '') {
              element.innerText = 0;
            }
          }
        })
        .catch(error => {
          console.error('LeanCloud Counter Error', error);
        });
    }
  }

  fetch('https://app-router.leancloud.cn/2/route?appId=Cu5hv7V1QMPq7AdjyURssVXX-gzGzoHsz')
    .then(response => response.json())
    .then(({ api_server }) => {
      var Counter = (method, url, data) => {
        return fetch(`https://${api_server}/1.1${url}`, {
          method,
          headers: {
            'X-LC-Id'     : 'Cu5hv7V1QMPq7AdjyURssVXX-gzGzoHsz',
            'X-LC-Key'    : 'toOnmwMBckjo5Jyi54jK5ejF',
            'Content-Type': 'application/json',
          },
          body: JSON.stringify(data)
        });
      };
      if (CONFIG.page.isPost) {
        if (CONFIG.hostname !== location.hostname) return;
        addCount(Counter);
      } else if (document.querySelectorAll('.post-title-link').length >= 1) {
        showTime(Counter);
      }
    });
  </script>


      </div>
    </footer>
  </div>

  
  <script src="/lib/anime.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
  <script src="//cdn.jsdelivr.net/gh/fancyapps/fancybox@3/dist/jquery.fancybox.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/medium-zoom@1/dist/medium-zoom.min.js"></script>
  <script src="//cdn.jsdelivr.net/npm/lozad@1/dist/lozad.min.js"></script>
  <script src="/lib/velocity/velocity.min.js"></script>
  <script src="/lib/velocity/velocity.ui.min.js"></script>

<script src="/js/utils.js"></script>

<script src="/js/motion.js"></script>


<script src="/js/schemes/muse.js"></script>


<script src="/js/next-boot.js"></script>

<script src="/js/bookmark.js"></script>




  




  
<script src="/js/local-search.js"></script>









<script>
if (document.querySelectorAll('div.pdf').length) {
  NexT.utils.getScript('//cdn.jsdelivr.net/npm/pdfobject@2/pdfobject.min.js', () => {
    document.querySelectorAll('div.pdf').forEach(element => {
      PDFObject.embed(element.getAttribute('target'), element, {
        pdfOpenParams: {
          navpanes : 0,
          toolbar  : 0,
          statusbar: 0,
          pagemode : 'thumbs',
          view     : 'FitH'
        },
        PDFJS_URL: '/lib/pdf/web/viewer.html',
        height   : element.getAttribute('height') || '500px'
      });
    });
  }, window.PDFObject);
}
</script>


<script>
if (document.querySelectorAll('pre.mermaid').length) {
  NexT.utils.getScript('//cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js', () => {
    mermaid.initialize({
      theme    : 'dark',
      logLevel : 3,
      flowchart: { curve     : 'linear' },
      gantt    : { axisFormat: '%m/%d/%Y' },
      sequence : { actorMargin: 50 }
    });
  }, window.mermaid);
}
</script>


  

  


<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
  NexT.utils.getScript('//unpkg.com/valine/dist/Valine.min.js', () => {
    var GUEST = ['nick', 'mail', 'link'];
    var guest = 'nick,mail,link';
    guest = guest.split(',').filter(item => {
      return GUEST.includes(item);
    });
    new Valine({
      el         : '#valine-comments',
      verify     : false,
      notify     : false,
      appId      : 'Cu5hv7V1QMPq7AdjyURssVXX-gzGzoHsz',
      appKey     : 'toOnmwMBckjo5Jyi54jK5ejF',
      placeholder: "Just go go",
      avatar     : 'mm',
      meta       : guest,
      pageSize   : '10' || 10,
      visitor    : false,
      lang       : 'zh-cn' || 'zh-cn',
      path       : location.pathname,
      recordIP   : true,
      serverURLs : ''
    });
  }, window.Valine);
});
</script>

</body>
</html>
